﻿using ECMS.AppService.Model.Requests;
using ECMS.AppService.Model.Responses;
using ECMS.Infrastructure.ClientData;
using ECMS.Infrastructure.Domain;
using ECMS.Infrastructure.Messaging;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace ECMS.AppService.Interfaces
{
   public partial interface IPostService
    {
        Task<ApiResult<SaveResponse>> PostingAsync(PostRequest model);

        Task<ApiResult<PostResponse>> PostDetailAsync(GuidRequest guid);

        Task<ApiResult<string>> DeletePostAsync(GuidRequest guid);

        Task<ApiResult<Page<PostResponse>>> AllPostPageByUserAsync(GetPostPagesRequest request);

        Task<ApiResult<Page<PostResponse>>> AllPostPageAsync(GetPostPagesRequest request);

        Task<ApiResult<PostResponse>> CheckPostAsync(PostRequest model); 

    }

    public partial interface IReplyService
    {
        Task<ApiResult<Page<ReplyResponse>>> AllReplyPageByUserAsync(GetReplyPagesRequest request);

        Task<ApiResult<string>> DeleteReplyAsync(GuidRequest request);

        Task<ApiResult<SaveResponse>> CommentAsync(ReplyRequest request);

        Task<ApiResult<Page<ReplyResponse>>> AllReplyPageAsync(GetReplyPagesRequest request);
        
        Task<ApiResult<ReplyResponse>> AllReplyCountAsync(ReplyRequest request);
    }

    public partial interface ILikeService
    {
        Task<ApiResult<SaveResponse>> LikePostOrNotAsync(LikeRequest model);
        Task<ApiResult<List<LikeResponse>>> AllLikeByPostAsync(LikeRequest model);
        Task<ApiResult<SaveResponse>> LikeReplyOrNotAsync(LikeRequest model);
        
    }

    public interface IViewService
    {
        Task<ApiResult<ViewResponse>> ViewPostCountAsync(ViewRequest model);

    }
}
